#include <iostream>
#include <limits>

using namespace std;

int main()
{
//    struct free_custom
//    {
//        bool                 bool_;

//        char                 char_;
//        signed char          signed_char_;
//        unsigned char        unsigned_char_;

//        int                  int_;
//        signed int           signed_int_;
//        unsigned int         unsigned_int_;
//        short int            short_int_;
//        signed short int     signed_short_int_;
//        unsigned short int   unsigned_short_int_;
//        long int             long_int_;
//        signed long int      signed_long_int_;
//        unsigned long int    unsigned_long_int_;

//        signed               signed_;
//        unsigned             unsigned_;
//        size_t               size_t_;

//        short                short_;
//        float                float_;
//        double               double_;
//        wchar_t              wchar_t_;
//        string               string_;
//    };

//    int len = getArrayLen(free_custom);
//    int len = sizeof(free_custom)/sizeof(int);
//    cout<<"len:"<<len<<endl;
//    cout<<"len_:"<<len_<<endl;

//    for(int i;i<len;i++)
//    {
//        cout<<i<<"号, 所占字节数"<<sizeof(free_custom[i])<<"最大值"<<numeric_limits<free_custom[i]>::max()<<"最小值"<<numeric_limits<free_custom[i]>::min()<<endl;

//    }
    cout << "type: \t\t" << "************size**************"<< endl;
        cout << "bool: \t\t" << "所占字节数：" << sizeof(bool);
        cout << "\t最大值：" << (numeric_limits<bool>::max)();
        cout << "\t\t最小值：" << (numeric_limits<bool>::min)() << endl;
        cout << "char: \t\t" << "所占字节数：" << sizeof(char);
        cout << "\t最大值：" << (numeric_limits<char>::max)();
        cout << "\t\t最小值：" << (numeric_limits<char>::min)() << endl;
        cout << "signed char: \t" << "所占字节数：" << sizeof(signed char);
        cout << "\t最大值：" << (numeric_limits<signed char>::max)();
        cout << "\t\t最小值：" << (numeric_limits<signed char>::min)() << endl;
        cout << "unsigned char: \t" << "所占字节数：" << sizeof(unsigned char);
        cout << "\t最大值：" << (numeric_limits<unsigned char>::max)();
        cout << "\t\t最小值：" << (numeric_limits<unsigned char>::min)() << endl;
        cout << "wchar_t: \t" << "所占字节数：" << sizeof(wchar_t);
        cout << "\t最大值：" << (numeric_limits<wchar_t>::max)();
        cout << "\t\t最小值：" << (numeric_limits<wchar_t>::min)() << endl;
        cout << "short: \t\t" << "所占字节数：" << sizeof(short);
        cout << "\t最大值：" << (numeric_limits<short>::max)();
        cout << "\t\t最小值：" << (numeric_limits<short>::min)() << endl;
        cout << "int: \t\t" << "所占字节数：" << sizeof(int);
        cout << "\t最大值：" << (numeric_limits<int>::max)();
        cout << "\t最小值：" << (numeric_limits<int>::min)() << endl;
        cout << "unsigned: \t" << "所占字节数：" << sizeof(unsigned);
        cout << "\t最大值：" << (numeric_limits<unsigned>::max)();
        cout << "\t最小值：" << (numeric_limits<unsigned>::min)() << endl;
        cout << "long: \t\t" << "所占字节数：" << sizeof(long);
        cout << "\t最大值：" << (numeric_limits<long>::max)();
        cout << "\t最小值：" << (numeric_limits<long>::min)() << endl;
        cout << "unsigned long: \t" << "所占字节数：" << sizeof(unsigned long);
        cout << "\t最大值：" << (numeric_limits<unsigned long>::max)();
        cout << "\t最小值：" << (numeric_limits<unsigned long>::min)() << endl;
        cout << "double: \t" << "所占字节数：" << sizeof(double);
        cout << "\t最大值：" << (numeric_limits<double>::max)();
        cout << "\t最小值：" << (numeric_limits<double>::min)() << endl;
        cout << "long double: \t" << "所占字节数：" << sizeof(long double);
        cout << "\t最大值：" << (numeric_limits<long double>::max)();
        cout << "\t最小值：" << (numeric_limits<long double>::min)() << endl;
        cout << "float: \t\t" << "所占字节数：" << sizeof(float);
        cout << "\t最大值：" << (numeric_limits<float>::max)();
        cout << "\t最小值：" << (numeric_limits<float>::min)() << endl;
        cout << "size_t: \t" << "所占字节数：" << sizeof(size_t);
        cout << "\t最大值：" << (numeric_limits<size_t>::max)();
        cout << "\t最小值：" << (numeric_limits<size_t>::min)() << endl;
        cout << "string: \t" << "所占字节数：" << sizeof(string) << endl;
        // << "\t最大值：" << (numeric_limits<string>::max)() << "\t最小值：" << (numeric_limits<string>::min)() << endl;
        cout << "type: \t\t" << "************size**************"<< endl;

    return 0;
}

